package com.example.uploadfile.service;

import com.sun.org.slf4j.internal.Logger;
import com.sun.org.slf4j.internal.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;

@Service
public class UploadService {

    // 制作文件的白名单,使用Arrays.asList列出一个常量的字符串
    private static final List<String> CONTENT_TYPES = Arrays.asList("image/gif","image/jpeg","image/png");
    // 定义输出错误日志
    private static final Logger LOGGER = LoggerFactory.getLogger(UploadService.class);

    public String uploadFile(MultipartFile multipartFile) {

        //获取文件类型
        String originalFilename = multipartFile.getOriginalFilename();
        try {
            // 校验文件类型
            // 列出所有文件合法类型
//            String contentType = multipartFile.getContentType();
//            if (!CONTENT_TYPES.contains(contentType)){
//                LOGGER.debug("文件类型不合法：{}",originalFilename);
//                return null;
//            }
            // 校验文件的内容，ImageIO读取文件内容
//            BufferedImage bufferedImage = ImageIO.read(multipartFile.getInputStream());
//            if (bufferedImage == null){
//                LOGGER.debug("文件内容不合法：{}",originalFilename);
//                return null;
//            }
            // 保存到服务器
            multipartFile.transferTo(new File("/Volumes/external/"+originalFilename));
            //返回url地址
            return "http://127.0.0.1:81/"+originalFilename;
        } catch (IOException e) {
            LOGGER.debug("服务器内部错误：" + originalFilename);
            e.printStackTrace();
        }

        return null;
    }
}
